package com.blog.cmrpersonalblog.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.blog.cmrpersonalblog.entity.CommentImage;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 评论图片数据访问接口
 */
@Mapper
public interface CommentImageMapper extends BaseMapper<CommentImage> {

    /**
     * 根据评论ID获取图片列表
     * @param commentId 评论ID
     * @return 图片列表
     */
    List<CommentImage> selectByCommentId(@Param("commentId") Long commentId);

    /**
     * 批量根据评论ID列表获取图片列表
     * @param commentIds 评论ID列表
     * @return 图片列表
     */
    List<CommentImage> selectByCommentIds(@Param("commentIds") List<Long> commentIds);

    /**
     * 根据评论ID和用户ID获取图片列表
     * @param commentId 评论ID
     * @param userId 用户ID
     * @return 图片列表
     */
    List<CommentImage> selectByCommentIdAndUserId(@Param("commentId") Long commentId, @Param("userId") Long userId);

    /**
     * 批量插入图片记录
     * @param images 图片列表
     * @return 插入数量
     */
    int insertBatch(@Param("images") List<CommentImage> images);

    /**
     * 根据评论ID删除所有图片
     * @param commentId 评论ID
     * @param userId 用户ID
     * @return 删除数量
     */
    int deleteByCommentIdAndUserId(@Param("commentId") Long commentId, @Param("userId") Long userId);

    /**
     * 更新图片状态
     * @param imageId 图片ID
     * @param status 状态
     * @param userId 用户ID
     * @return 更新数量
     */
    int updateStatusById(@Param("imageId") Long imageId, @Param("status") Integer status, @Param("userId") Long userId);

    /**
     * 批量更新评论图片状态（根据评论ID）
     * @param commentId 评论ID
     * @param status 状态 0-已删除 1-正常
     * @return 更新数量
     */
    int updateStatusByCommentId(@Param("commentId") Long commentId, @Param("status") Integer status);

    /**
     * 批量更新多个评论的图片状态（用于删除评论树）
     * @param commentIds 评论ID列表
     * @param status 状态 0-已删除 1-正常
     * @return 更新数量
     */
    int updateStatusByCommentIds(@Param("commentIds") List<Long> commentIds, @Param("status") Integer status);
}
